﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Negocio;
using Business.Entities;

namespace UI.Desktop
{
    public partial class PlanDesktop : ApplicationForm
    {
        private Plan pl;
        private Especialidad espe;
        List<Especialidad> especialidades;
        EspecialidadLogic el;

        public Especialidad Espe
        {
            get { return espe; }
            set { espe = value; }
        }

        public Plan PlanActual
        {
            get { return pl; }
            set { pl = value; }
        }
 
        public PlanDesktop()
        {
            InitializeComponent();
        }

        public PlanDesktop(modoForm modo)
        {
            InitializeComponent();
           ModoForm=modo;
           cmbEspecialidad.Items.Clear();
           this.cargaEspecialidades();
                                 
        }

        public PlanDesktop(int ID, modoForm modo) 
        {
            InitializeComponent();
            ModoForm = modo;
            PlanLogic pl = new PlanLogic();
            PlanActual = pl.GetOne(ID);
            this.MapearDeDatos();
        }

        public override bool Validar()
        {
            if (this.txtDescripcion.Text == "")
            {
                this.Notificar("Error", "Rellenar los campos requeridos", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;

            }

            else
            {
                return true;

            }
        }

        public override void GuardarCambios()
        {
            this.MapearADatos();
            PlanLogic pl = new PlanLogic();
            if (ModoForm == modoForm.Baja)
            {
                PlanActual.State = BussinessEntity.States.Deleted;
                pl.delete(PlanActual.ID);
            }
            pl.save(PlanActual);
        }


        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (this.Validar())
            {
                this.GuardarCambios();
                Close();
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }

        public override void MapearADatos()
        {
            if (ModoForm == modoForm.Alta)
            {
                Plan pla = new Plan();
                PlanActual = pla;
                this.PlanActual.State = BussinessEntity.States.New;


            }
            if (ModoForm == modoForm.Modificacion)
            {
                this.PlanActual.ID = Convert.ToInt32(this.txtId.Text);
                this.PlanActual.State = BussinessEntity.States.Modified;
            }
            el = new EspecialidadLogic();
            this.PlanActual.Descripcion = this.txtDescripcion.Text;
            this.PlanActual.Idespecialidad = el.buscaID(cmbEspecialidad.Text);
        }

        public override void MapearDeDatos()
        {
            this.txtId.Text = this.PlanActual.ID.ToString();
            this.txtDescripcion.Text = this.PlanActual.Descripcion;




            if (ModoForm == modoForm.Alta)
            {

                this.btnAceptar.Text = "Guardar";

            }
            else
            {
                if (ModoForm == modoForm.Modificacion)
                {
                    cmbEspecialidad.Items.Clear();
                    this.cargaEspecialidades();
                    el = new EspecialidadLogic();
                    espe = el.getOne(PlanActual.Idespecialidad);
                    this.cmbEspecialidad.Text = espe.Descripcion;

                }
                else
                {
                    if (ModoForm == modoForm.Baja)
                    {
                        cmbEspecialidad.Items.Clear();
                        this.cargaEspecialidades();
                        this.txtDescripcion.Enabled = false;
                        el = new EspecialidadLogic();
                        espe = el.getOne(PlanActual.Idespecialidad);
                        this.cmbEspecialidad.Text = espe.Descripcion;
                        this.cmbEspecialidad.Enabled = false;
                        this.btnAceptar.Enabled = true;
                        this.btnAceptar.Text = "Eliminar";

                    }
                    else
                    {
                        if (ModoForm == modoForm.Consulta)
                        {
                            this.btnAceptar.Text = "Aceptar";
                        }

                    }

                }

            }
        }

        private void PlanDesktop_Load(object sender, EventArgs e)
        {
   
                       
        }

        private void cmbEspecialidad_SelectedIndexChanged(object sender, EventArgs e)
        {
            btnAceptar.Enabled = true;
        }

        private void cargaEspecialidades()
        {
            
            el = new EspecialidadLogic();
            especialidades = el.getAll();
            this.cmbEspecialidad.Items.Clear();
            for (int i = 0; i < especialidades.Count; i++)
            {
                cmbEspecialidad.Items.Add(especialidades[i].Descripcion);
            }
            especialidades.Clear();
            
           
        
        }


    }
}
